/**
 * <p>Title: ObjectFor3D.java>
 * <p>Description: 设计模式-观察者模式：提供3D服务
 * <p>Company: YSS
 * @author yangsongsong
 * @date 2019年1月8日
 */
package com.yss.obsever;

import java.util.ArrayList;
import java.util.List;

public class ObjectFor3D implements Subject {

	/**
	 * 订阅者集合
	 */
	private List<Observer> observers = new ArrayList<Observer>();
	/**
	 * 更新的信息
	 */
	private String message;

	/*
	 * 订阅3D服务
	 * 
	 * @see com.yss.obsever.Subject#registerOberver(com.yss.obsever.Observer)
	 */
	@Override
	public void registerOberver(Observer observer) {
		observers.add(observer);
	}

	/*
	 * 取消3D服务订阅
	 * 
	 * @see com.yss.obsever.Subject#removeObserver(com.yss.obsever.Observer)
	 */
	@Override
	public void removeObserver(Observer observer) {
		int index = observers.indexOf(observer);
		if (index >= 0) {
			observers.remove(index);
		} else {
			System.out.println("observers 出问题了！！！");
		}
	}

	/*
	 * 通知所有的订阅者更新消息
	 * 
	 * @see com.yss.obsever.Subject#notifyObservers()
	 */
	@Override
	public void notifyObservers() {
		for (Observer observer : observers) {
			observer.update(message);
		}
	}

	/**
	 * @param message
	 *            the message to set
	 */
	public void setMessage(String message) {
		this.message = message;
		notifyObservers();
	}

}
